﻿using System;
namespace Producers.Etoimik.Xtee.Riik.Ee.Producer.Etoimik {
    
    
    [global::Xtee.Core.Attributes.XmlTypeAttribute(Name="KarrKaristus", Namespace="http://producers.etoimik.xtee.riik.ee/producer/etoimik", Target=typeof(KarrKaristus))]
    public class KarrKaristusSerializer : global::Xtee.Core.Types.AbstractXteeSerializable {
        
        protected IKarrKaristus clazz;
        
        public KarrKaristusSerializer(IKarrKaristus clazz) {
            this.clazz = clazz;
        }
        
        public override void WriteXml(global::Xtee.Core.IXteeXmlWriter Writer) {
            base.WriteXml(Writer);
            if (clazz.ObjektID!=null) {
                Writer.WriteStartElement("ObjektID");
                Writer.WriteTypeAttribute("http://www.w3.org/2001/XMLSchema", "long");
                Writer.WriteString(new global::Xtee.Core.Schema.XsdLong(((long)(clazz.ObjektID))).ToString());
                Writer.WriteEndElement();
            }
            if (clazz.LiikKL!=null) {
                Writer.WriteStartElement("LiikKL");
                Writer.WriteTypeAttribute("http://www.w3.org/2001/XMLSchema", "long");
                Writer.WriteString(new global::Xtee.Core.Schema.XsdLong(((long)(clazz.LiikKL))).ToString());
                Writer.WriteEndElement();
            }
            if (clazz.SeisundKL!=null) {
                Writer.WriteStartElement("SeisundKL");
                Writer.WriteTypeAttribute("http://www.w3.org/2001/XMLSchema", "long");
                Writer.WriteString(new global::Xtee.Core.Schema.XsdLong(((long)(clazz.SeisundKL))).ToString());
                Writer.WriteEndElement();
            }
            if (clazz.RakendamiseLoppAlusKL!=null) {
                Writer.WriteStartElement("RakendamiseLoppAlusKL");
                Writer.WriteTypeAttribute("http://www.w3.org/2001/XMLSchema", "long");
                Writer.WriteString(new global::Xtee.Core.Schema.XsdLong(((long)(clazz.RakendamiseLoppAlusKL))).ToString());
                Writer.WriteEndElement();
            }
            if (clazz.EelvangistusesViibitudPaevadeArv!=null) {
                Writer.WriteStartElement("EelvangistusesViibitudPaevadeArv");
                Writer.WriteTypeAttribute("http://www.w3.org/2001/XMLSchema", "int");
                Writer.WriteString(new global::Xtee.Core.Schema.XsdInt(((int)(clazz.EelvangistusesViibitudPaevadeArv))).ToString());
                Writer.WriteEndElement();
            }
            if (clazz.TaitmiseKP!=null) {
                Writer.WriteStartElement("TaitmiseKP");
                Writer.WriteTypeAttribute("http://www.w3.org/2001/XMLSchema", "dateTime");
                Writer.WriteString(new global::Xtee.Core.Schema.XsdDateTime(((System.DateTime)(clazz.TaitmiseKP))).ToString());
                Writer.WriteEndElement();
            }
            if (clazz.TingimisiVabastamiseKP!=null) {
                Writer.WriteStartElement("TingimisiVabastamiseKP");
                Writer.WriteTypeAttribute("http://www.w3.org/2001/XMLSchema", "dateTime");
                Writer.WriteString(new global::Xtee.Core.Schema.XsdDateTime(((System.DateTime)(clazz.TingimisiVabastamiseKP))).ToString());
                Writer.WriteEndElement();
            }
            if (clazz.ToimepanemiseKP!=null) {
                Writer.WriteStartElement("ToimepanemiseKP");
                Writer.WriteTypeAttribute("http://www.w3.org/2001/XMLSchema", "dateTime");
                Writer.WriteString(new global::Xtee.Core.Schema.XsdDateTime(((System.DateTime)(clazz.ToimepanemiseKP))).ToString());
                Writer.WriteEndElement();
            }
            if (clazz.RakendamiseTahtaegKP!=null) {
                Writer.WriteStartElement("RakendamiseTahtaegKP");
                Writer.WriteTypeAttribute("http://www.w3.org/2001/XMLSchema", "dateTime");
                Writer.WriteString(new global::Xtee.Core.Schema.XsdDateTime(((System.DateTime)(clazz.RakendamiseTahtaegKP))).ToString());
                Writer.WriteEndElement();
            }
            if (clazz.MoistetudAastaid!=null) {
                Writer.WriteStartElement("MoistetudAastaid");
                Writer.WriteTypeAttribute("http://www.w3.org/2001/XMLSchema", "int");
                Writer.WriteString(new global::Xtee.Core.Schema.XsdInt(((int)(clazz.MoistetudAastaid))).ToString());
                Writer.WriteEndElement();
            }
            if (clazz.MoistetudKuid!=null) {
                Writer.WriteStartElement("MoistetudKuid");
                Writer.WriteTypeAttribute("http://www.w3.org/2001/XMLSchema", "int");
                Writer.WriteString(new global::Xtee.Core.Schema.XsdInt(((int)(clazz.MoistetudKuid))).ToString());
                Writer.WriteEndElement();
            }
            if (clazz.MoistetudPaevi!=null) {
                Writer.WriteStartElement("MoistetudPaevi");
                Writer.WriteTypeAttribute("http://www.w3.org/2001/XMLSchema", "int");
                Writer.WriteString(new global::Xtee.Core.Schema.XsdInt(((int)(clazz.MoistetudPaevi))).ToString());
                Writer.WriteEndElement();
            }
            if (clazz.MoistetudTunde!=null) {
                Writer.WriteStartElement("MoistetudTunde");
                Writer.WriteTypeAttribute("http://www.w3.org/2001/XMLSchema", "int");
                Writer.WriteString(new global::Xtee.Core.Schema.XsdInt(((int)(clazz.MoistetudTunde))).ToString());
                Writer.WriteEndElement();
            }
            if (clazz.MoistetudSumma!=null) {
                Writer.WriteStartElement("MoistetudSumma");
                Writer.WriteTypeAttribute("http://www.w3.org/2001/XMLSchema", "decimal");
                Writer.WriteString(new global::Xtee.Core.Schema.XsdDecimal(((decimal)(clazz.MoistetudSumma))).ToString());
                Writer.WriteEndElement();
            }
            if (clazz.MoistetudSummaValuutaKL!=null) {
                Writer.WriteStartElement("MoistetudSummaValuutaKL");
                Writer.WriteTypeAttribute("http://www.w3.org/2001/XMLSchema", "long");
                Writer.WriteString(new global::Xtee.Core.Schema.XsdLong(((long)(clazz.MoistetudSummaValuutaKL))).ToString());
                Writer.WriteEndElement();
            }
            if (clazz.MoistetudMaaradeArv!=null) {
                Writer.WriteStartElement("MoistetudMaaradeArv");
                Writer.WriteTypeAttribute("http://www.w3.org/2001/XMLSchema", "int");
                Writer.WriteString(new global::Xtee.Core.Schema.XsdInt(((int)(clazz.MoistetudMaaradeArv))).ToString());
                Writer.WriteEndElement();
            }
            if (clazz.AllutadaKaitumiskontrollile!=null) {
                Writer.WriteStartElement("AllutadaKaitumiskontrollile");
                Writer.WriteTypeAttribute("http://www.w3.org/2001/XMLSchema", "boolean");
                Writer.WriteString(new global::Xtee.Core.Schema.XsdBoolean(((bool)(clazz.AllutadaKaitumiskontrollile))).ToString());
                Writer.WriteEndElement();
            }
            if (clazz.KatseajaAlgusKP!=null) {
                Writer.WriteStartElement("KatseajaAlgusKP");
                Writer.WriteTypeAttribute("http://www.w3.org/2001/XMLSchema", "dateTime");
                Writer.WriteString(new global::Xtee.Core.Schema.XsdDateTime(((System.DateTime)(clazz.KatseajaAlgusKP))).ToString());
                Writer.WriteEndElement();
            }
            if (clazz.KatseajaLoppKP!=null) {
                Writer.WriteStartElement("KatseajaLoppKP");
                Writer.WriteTypeAttribute("http://www.w3.org/2001/XMLSchema", "dateTime");
                Writer.WriteString(new global::Xtee.Core.Schema.XsdDateTime(((System.DateTime)(clazz.KatseajaLoppKP))).ToString());
                Writer.WriteEndElement();
            }
            if (clazz.MoistetudKatseajaAastaid!=null) {
                Writer.WriteStartElement("MoistetudKatseajaAastaid");
                Writer.WriteTypeAttribute("http://www.w3.org/2001/XMLSchema", "int");
                Writer.WriteString(new global::Xtee.Core.Schema.XsdInt(((int)(clazz.MoistetudKatseajaAastaid))).ToString());
                Writer.WriteEndElement();
            }
            if (clazz.MoistetudKatseajaKuid!=null) {
                Writer.WriteStartElement("MoistetudKatseajaKuid");
                Writer.WriteTypeAttribute("http://www.w3.org/2001/XMLSchema", "int");
                Writer.WriteString(new global::Xtee.Core.Schema.XsdInt(((int)(clazz.MoistetudKatseajaKuid))).ToString());
                Writer.WriteEndElement();
            }
            if (clazz.MoistetudKatseajaPaevi!=null) {
                Writer.WriteStartElement("MoistetudKatseajaPaevi");
                Writer.WriteTypeAttribute("http://www.w3.org/2001/XMLSchema", "int");
                Writer.WriteString(new global::Xtee.Core.Schema.XsdInt(((int)(clazz.MoistetudKatseajaPaevi))).ToString());
                Writer.WriteEndElement();
            }
            if (clazz.LisaKaristused!=null) {
                Writer.WriteStartElement("LisaKaristused");
                Writer.WriteTypeAttribute("http://schemas.xmlsoap.org/soap/encoding/", "Array");
                Writer.WriteArrayTypeAttribute("KarrKaristus", "http://producers.etoimik.xtee.riik.ee/producer/etoimik", clazz.LisaKaristused.Count);
                for (int x = 0; ((clazz.LisaKaristused != null) 
                            && (x < clazz.LisaKaristused.Count)); x = (x + 1)) {
                    if (clazz.LisaKaristused[x]!=null) {
                        Writer.WriteStartElement("item");
                        global::Xtee.Core.SerializationMetadata metaLisaKaristused = this.GetMetaData(clazz.LisaKaristused[x]);
                        Writer.WriteTypeAttribute(metaLisaKaristused.TypeQualifiedName.Namespace, metaLisaKaristused.TypeQualifiedName.Name);
                        metaLisaKaristused.NewSerializer(clazz.LisaKaristused[x]).WriteXml(Writer);
                        Writer.WriteEndElement();
                    }
                }
                Writer.WriteEndElement();
            }
            if (clazz.Kvalifikatsioon!=null) {
                Writer.WriteStartElement("Kvalifikatsioon");
                Writer.WriteTypeAttribute("http://schemas.xmlsoap.org/soap/encoding/", "Array");
                Writer.WriteArrayTypeAttribute("string", "http://www.w3.org/2001/XMLSchema", clazz.Kvalifikatsioon.Count);
                for (int x = 0; ((clazz.Kvalifikatsioon != null) 
                            && (x < clazz.Kvalifikatsioon.Count)); x = (x + 1)) {
                    if (clazz.Kvalifikatsioon[x]!=null) {
                        Writer.WriteStartElement("item");
                        Writer.WriteTypeAttribute("http://www.w3.org/2001/XMLSchema", "string");
                        Writer.WriteString(new global::Xtee.Core.Schema.XsdString(((string)(clazz.Kvalifikatsioon[x]))).ToString());
                        Writer.WriteEndElement();
                    }
                }
                Writer.WriteEndElement();
            }
        }
        
        public override void ReadXml(global::Xtee.Core.IXteeXmlReader Reader) {
            base.ReadXml(Reader);
            if (Reader.LocalName=="ObjektID") {
                if (Reader.IsElementNil()) {
                    throw new global::Xtee.Core.Exceptions.NillableNotAllowedException(">>KarrKaristus>ObjektID");
                }
                clazz.ObjektID = new global::Xtee.Core.Schema.XsdLong(Reader.ReadElementString("ObjektID")).Value;
            }
            if (Reader.LocalName=="LiikKL") {
                if ((Reader.IsElementNil() == false)) {
                    clazz.LiikKL = new global::Xtee.Core.Schema.XsdLong(Reader.ReadElementString("LiikKL")).Value;
                }
                else {
                    Reader.Skip();
                }
            }
            if (Reader.LocalName=="SeisundKL") {
                if ((Reader.IsElementNil() == false)) {
                    clazz.SeisundKL = new global::Xtee.Core.Schema.XsdLong(Reader.ReadElementString("SeisundKL")).Value;
                }
                else {
                    Reader.Skip();
                }
            }
            if (Reader.LocalName=="RakendamiseLoppAlusKL") {
                if ((Reader.IsElementNil() == false)) {
                    clazz.RakendamiseLoppAlusKL = new global::Xtee.Core.Schema.XsdLong(Reader.ReadElementString("RakendamiseLoppAlusKL")).Value;
                }
                else {
                    Reader.Skip();
                }
            }
            if (Reader.LocalName=="EelvangistusesViibitudPaevadeArv") {
                if ((Reader.IsElementNil() == false)) {
                    clazz.EelvangistusesViibitudPaevadeArv = new global::Xtee.Core.Schema.XsdInt(Reader.ReadElementString("EelvangistusesViibitudPaevadeArv")).Value;
                }
                else {
                    Reader.Skip();
                }
            }
            if (Reader.LocalName=="TaitmiseKP") {
                if ((Reader.IsElementNil() == false)) {
                    clazz.TaitmiseKP = new global::Xtee.Core.Schema.XsdDateTime(Reader.ReadElementString("TaitmiseKP")).Value;
                }
                else {
                    Reader.Skip();
                }
            }
            if (Reader.LocalName=="TingimisiVabastamiseKP") {
                if ((Reader.IsElementNil() == false)) {
                    clazz.TingimisiVabastamiseKP = new global::Xtee.Core.Schema.XsdDateTime(Reader.ReadElementString("TingimisiVabastamiseKP")).Value;
                }
                else {
                    Reader.Skip();
                }
            }
            if (Reader.LocalName=="ToimepanemiseKP") {
                if ((Reader.IsElementNil() == false)) {
                    clazz.ToimepanemiseKP = new global::Xtee.Core.Schema.XsdDateTime(Reader.ReadElementString("ToimepanemiseKP")).Value;
                }
                else {
                    Reader.Skip();
                }
            }
            if (Reader.LocalName=="RakendamiseTahtaegKP") {
                if ((Reader.IsElementNil() == false)) {
                    clazz.RakendamiseTahtaegKP = new global::Xtee.Core.Schema.XsdDateTime(Reader.ReadElementString("RakendamiseTahtaegKP")).Value;
                }
                else {
                    Reader.Skip();
                }
            }
            if (Reader.LocalName=="MoistetudAastaid") {
                if ((Reader.IsElementNil() == false)) {
                    clazz.MoistetudAastaid = new global::Xtee.Core.Schema.XsdInt(Reader.ReadElementString("MoistetudAastaid")).Value;
                }
                else {
                    Reader.Skip();
                }
            }
            if (Reader.LocalName=="MoistetudKuid") {
                if ((Reader.IsElementNil() == false)) {
                    clazz.MoistetudKuid = new global::Xtee.Core.Schema.XsdInt(Reader.ReadElementString("MoistetudKuid")).Value;
                }
                else {
                    Reader.Skip();
                }
            }
            if (Reader.LocalName=="MoistetudPaevi") {
                if ((Reader.IsElementNil() == false)) {
                    clazz.MoistetudPaevi = new global::Xtee.Core.Schema.XsdInt(Reader.ReadElementString("MoistetudPaevi")).Value;
                }
                else {
                    Reader.Skip();
                }
            }
            if (Reader.LocalName=="MoistetudTunde") {
                if ((Reader.IsElementNil() == false)) {
                    clazz.MoistetudTunde = new global::Xtee.Core.Schema.XsdInt(Reader.ReadElementString("MoistetudTunde")).Value;
                }
                else {
                    Reader.Skip();
                }
            }
            if (Reader.LocalName=="MoistetudSumma") {
                if ((Reader.IsElementNil() == false)) {
                    clazz.MoistetudSumma = new global::Xtee.Core.Schema.XsdDecimal(Reader.ReadElementString("MoistetudSumma")).Value;
                }
                else {
                    Reader.Skip();
                }
            }
            if (Reader.LocalName=="MoistetudSummaValuutaKL") {
                if ((Reader.IsElementNil() == false)) {
                    clazz.MoistetudSummaValuutaKL = new global::Xtee.Core.Schema.XsdLong(Reader.ReadElementString("MoistetudSummaValuutaKL")).Value;
                }
                else {
                    Reader.Skip();
                }
            }
            if (Reader.LocalName=="MoistetudMaaradeArv") {
                if ((Reader.IsElementNil() == false)) {
                    clazz.MoistetudMaaradeArv = new global::Xtee.Core.Schema.XsdInt(Reader.ReadElementString("MoistetudMaaradeArv")).Value;
                }
                else {
                    Reader.Skip();
                }
            }
            if (Reader.LocalName=="AllutadaKaitumiskontrollile") {
                if ((Reader.IsElementNil() == false)) {
                    clazz.AllutadaKaitumiskontrollile = new global::Xtee.Core.Schema.XsdBoolean(Reader.ReadElementString("AllutadaKaitumiskontrollile")).Value;
                }
                else {
                    Reader.Skip();
                }
            }
            if (Reader.LocalName=="KatseajaAlgusKP") {
                if ((Reader.IsElementNil() == false)) {
                    clazz.KatseajaAlgusKP = new global::Xtee.Core.Schema.XsdDateTime(Reader.ReadElementString("KatseajaAlgusKP")).Value;
                }
                else {
                    Reader.Skip();
                }
            }
            if (Reader.LocalName=="KatseajaLoppKP") {
                if ((Reader.IsElementNil() == false)) {
                    clazz.KatseajaLoppKP = new global::Xtee.Core.Schema.XsdDateTime(Reader.ReadElementString("KatseajaLoppKP")).Value;
                }
                else {
                    Reader.Skip();
                }
            }
            if (Reader.LocalName=="MoistetudKatseajaAastaid") {
                if ((Reader.IsElementNil() == false)) {
                    clazz.MoistetudKatseajaAastaid = new global::Xtee.Core.Schema.XsdInt(Reader.ReadElementString("MoistetudKatseajaAastaid")).Value;
                }
                else {
                    Reader.Skip();
                }
            }
            if (Reader.LocalName=="MoistetudKatseajaKuid") {
                if ((Reader.IsElementNil() == false)) {
                    clazz.MoistetudKatseajaKuid = new global::Xtee.Core.Schema.XsdInt(Reader.ReadElementString("MoistetudKatseajaKuid")).Value;
                }
                else {
                    Reader.Skip();
                }
            }
            if (Reader.LocalName=="MoistetudKatseajaPaevi") {
                if ((Reader.IsElementNil() == false)) {
                    clazz.MoistetudKatseajaPaevi = new global::Xtee.Core.Schema.XsdInt(Reader.ReadElementString("MoistetudKatseajaPaevi")).Value;
                }
                else {
                    Reader.Skip();
                }
            }
            if (Reader.LocalName=="LisaKaristused") {
                if ((Reader.IsElementNil() == false)) {
                    clazz.LisaKaristused = new System.Collections.Generic.List<global::Producers.Etoimik.Xtee.Riik.Ee.Producer.Etoimik.IKarrKaristus>();
                    if ((Reader.IsEmptyElement == false)) {
                        Reader.ReadStartElement("LisaKaristused");
                        for (; ((Reader.NodeType != System.Xml.XmlNodeType.EndElement) 
                                    && (Reader.LocalName == "item")); ) {
                            if ((Reader.IsElementNil() == false)) {
                                global::Xtee.Core.SerializationMetadata metaLisaKaristused = this.GetMetaData<global::Producers.Etoimik.Xtee.Riik.Ee.Producer.Etoimik.IKarrKaristus>(Reader, "KarrKaristus", "http://producers.etoimik.xtee.riik.ee/producer/etoimik");
                                global::Producers.Etoimik.Xtee.Riik.Ee.Producer.Etoimik.IKarrKaristus item = metaLisaKaristused.NewEntity<global::Producers.Etoimik.Xtee.Riik.Ee.Producer.Etoimik.IKarrKaristus>();
                                clazz.LisaKaristused.Add(item);
                                if ((Reader.IsEmptyElement == false)) {
                                    Reader.ReadStartElement("item");
                                    metaLisaKaristused.NewSerializer(item).ReadXml(Reader);
                                    Reader.ReadEndElement();
                                }
                                else {
                                    Reader.Skip();
                                }
                            }
                            else {
                                clazz.LisaKaristused.Add(null);
                                Reader.Skip();
                            }
                        }
                        Reader.ReadEndElement();
                    }
                    else {
                        Reader.Skip();
                    }
                }
                else {
                    Reader.Skip();
                }
            }
            if (Reader.LocalName=="Kvalifikatsioon") {
                if ((Reader.IsElementNil() == false)) {
                    clazz.Kvalifikatsioon = new System.Collections.Generic.List<System.String>();
                    if ((Reader.IsEmptyElement == false)) {
                        Reader.ReadStartElement("Kvalifikatsioon");
                        for (; ((Reader.NodeType != System.Xml.XmlNodeType.EndElement) 
                                    && (Reader.LocalName == "item")); ) {
                            if ((Reader.IsElementNil() == false)) {
                                clazz.Kvalifikatsioon.Add(new global::Xtee.Core.Schema.XsdString(Reader.ReadElementString("item")).Value);
                            }
                            else {
                                clazz.Kvalifikatsioon.Add(null);
                                Reader.Skip();
                            }
                        }
                        Reader.ReadEndElement();
                    }
                    else {
                        Reader.Skip();
                    }
                }
                else {
                    Reader.Skip();
                }
            }
        }
    }
}
